﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NetFrameworkExtensions.DataLayer
{
  public interface IUserAuditableData
  {
    object CreatedById { get; set; }

    object ModifiedById { get; set; }

    object DeletedById { get; set; }
  }

  public interface IReferenceUserAuditableData<TUserIdentifier> :
    IUserAuditableData
    where TUserIdentifier : class, IEquatable<TUserIdentifier>
  {
    new TUserIdentifier CreatedById { get; set; }

    new TUserIdentifier ModifiedById { get; set; }

    new TUserIdentifier DeletedById { get; set; }
  }

  public interface IUserAuditableData<TUserIdentifier> :
    IUserAuditableData
    where TUserIdentifier : struct, IEquatable<TUserIdentifier>
  {
    new TUserIdentifier? CreatedById { get; set; }

    new TUserIdentifier? ModifiedById { get; set; }

    new TUserIdentifier? DeletedById { get; set; }
  }
}
